﻿Imports BLL
Imports EntitiesLayer

'---------------------------------------> Clase creada por Diego Barillas <----------------------------------------

Public Class frmConsultarEjercicios

    Dim numero As Integer 'Variable que almacena la fila seleccionada del dataGrid

    Public Sub frmConsultarEjercicios_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        '-------------- Aca se carga el dataGrid y se le dan las propiedades--------------------------
        tblEjercicios.DataSource = objGestor.listarEjercicios()
        tblEjercicios.Columns(0).Visible = False
        tblEjercicios.Columns(4).Visible = False
        tblEjercicios.Columns(5).Visible = False
        tblEjercicios.Columns(7).Visible = False
        tblEjercicios.Columns(8).Visible = False
        tblEjercicios.Columns(9).Visible = False
        'tblEjercicios.Columns(10).Visible = False
        tblEjercicios.Columns(1).HeaderText = "Nombre común"
        tblEjercicios.Columns(2).HeaderText = "Nombre opcional"
        tblEjercicios.Columns(3).HeaderText = "Código"
        tblEjercicios.Columns(6).HeaderText = "Músculo principal"

        tblEjercicios.Columns(1).Width = 300
        tblEjercicios.Columns(2).Width = 300
        tblEjercicios.Columns(3).Width = 200
        tblEjercicios.Columns(6).Width = 265

       




    End Sub


    Private Sub btnRegistrarEjercicio_Click(sender As Object, e As EventArgs) Handles btnRegistrarEjercicio.Click

        frmTransparente.Show() 'Muestra el form transparente
        frmRegistrarEjercicio.Show() 'Muestra el form de registrar ejercicio


    End Sub

    '-----------------------------Metodo para filtrar el dataGrid--------------------------------------------------
    Private Sub txtFiltrarTabla_TextChanged(sender As Object, e As EventArgs) Handles txtFiltrarTabla.TextChanged

        Dim texto As String = txtFiltrarTabla.Text 'guarda el valor escrito en el textBox
        Dim lista As IEnumerable = objGestor.filtrarListaEjercicios(texto) 'llama el metodo filtrarLista del gestor que devuelve una lista de ejercicios
        tblEjercicios.DataSource = lista 'Carga la lista en el dataGrid

        'validación para que si la lista contiene un valor muestre el data grid con las propiedades
        If lista IsNot Nothing Then
            tblEjercicios.Columns(0).Visible = False
            tblEjercicios.Columns(4).Visible = False
            tblEjercicios.Columns(5).Visible = False
            tblEjercicios.Columns(7).Visible = False
            tblEjercicios.Columns(8).Visible = False
            tblEjercicios.Columns(9).Visible = False
            'tblEjercicios.Columns(10).Visible = False
            tblEjercicios.Columns(1).HeaderText = "Nombre común"
            tblEjercicios.Columns(2).HeaderText = "Nombre opcional"
            tblEjercicios.Columns(3).HeaderText = "Código"
            tblEjercicios.Columns(6).HeaderText = "Músculo principal"

            tblEjercicios.Columns(1).Width = 300
            tblEjercicios.Columns(2).Width = 300
            tblEjercicios.Columns(3).Width = 200
            tblEjercicios.Columns(6).Width = 265

            'si la lista no contiene ningun ejercicio no muestra el dataGrid
        Else
            tblEjercicios.DataSource = Nothing
           
        End If
    End Sub

    Private Sub btnInfoEjercicio_Click(sender As Object, e As EventArgs) Handles btnInfoEjercicio.Click
 
        FrmPrincipal.paneForm.Controls.Clear()
        Dim frm As New Control
        frm = New frmInformacionEjercicio
        frm.Dock = DockStyle.Fill
        FrmPrincipal.paneForm.Controls.Add(frm)


        Dim ejercicio As Ejercicio = objGestor.buscarEjercicio(tblEjercicios.Item(0, numero).Value)  'Carga el ejercicio seleccionado en el data grid

        'recorre los textBox del user control informacionEjercicio y setea la información
        For Each x As frmInformacionEjercicio In FrmPrincipal.paneForm.Controls.OfType(Of frmInformacionEjercicio)()
            For Each y As TextBox In x.Controls.OfType(Of TextBox)()
                If (y.Name = "txtCodigo") Then
                    y.Text = ejercicio.Codigo
                ElseIf (y.Name = "txtNombreComun") Then
                    y.Text = ejercicio.NombreComun
                ElseIf (y.Name = "txtNombreOpcional") Then
                    y.Text = ejercicio.NombreOpcional
                ElseIf (y.Name = "txtMusculoPrincipal") Then
                    y.Text = ejercicio.MusculoPrincipal
                End If

            Next
            '----------------------------------------------------------------------------------------------------------------------

            'recorre los richTextBox del user control informacionEjercicio y setea la información
            For Each y As RichTextBox In x.Controls.OfType(Of RichTextBox)()
                If (y.Name = "txtErrores") Then
                    y.Text = ejercicio.ErroresComunes
                ElseIf (y.Name = "txtIndicaciones") Then
                    y.Text = ejercicio.IndicacionesGenerales
                End If

            Next

            'recorre los pictureBox del user control informacionEjercicio y setea la información
            For Each y As PictureBox In x.Controls.OfType(Of PictureBox)()
                If (y.Name = "pxbPosicionInicial") Then
                    Dim imagen As Image

                    imagen = BytesToImagen(consultaByte(ejercicio.PosicionInicial))
                    y.Image = imagen
                ElseIf (y.Name = "pxbPosicionFinal") Then
                    y.Image = BytesToImagen(consultaByte(ejercicio.PosicionFinal))
                End If

            Next
        Next

    End Sub

  

    Private Sub tblEjercicios_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles tblEjercicios.CellClick

        numero = tblEjercicios.CurrentRow.Index 'se guarda en la variable la fila seleccionada del dataGrid
        
    End Sub

   
    Private Sub btnModificar_Click(sender As Object, e As EventArgs) Handles btnModificar.Click

        Dim ejercicioSeleccionado As Ejercicio = objGestor.buscarEjercicio(tblEjercicios.Item(0, numero).Value) 'carga el ejercicio seleccionado en el dataGrid

        'Mostrar los datos del form frmModificarEjercicio
        frmModificarEjercicio.txtCodigo.Text = ejercicioSeleccionado.Codigo
        frmModificarEjercicio.txtNombreComun.Text = ejercicioSeleccionado.NombreComun
        frmModificarEjercicio.txtNombreOpcional.Text = ejercicioSeleccionado.NombreOpcional
        frmModificarEjercicio.txtErroresComunes.Text = ejercicioSeleccionado.ErroresComunes
        frmModificarEjercicio.txtIndicaciones.Text = ejercicioSeleccionado.IndicacionesGenerales
        frmModificarEjercicio.txtIdEjercicio.Text = ejercicioSeleccionado.Id

        For Each musculo As Musculo In objGestor.listaMusculos
            frmModificarEjercicio.cmbMusculos.Items.Add(musculo.Nombre)
        Next
        frmModificarEjercicio.cmbMusculos.Text = ejercicioSeleccionado.MusculoPrincipal
        frmModificarEjercicio.cmbMusculos.DisplayMember = ejercicioSeleccionado.MusculoPrincipal

        'Mostrar los datos del form frmModificarImagenesEjercicio}
        frmModificarImagenesEjercicio.picBoxPosicionInicial.Image = BytesToImagen(consultaByte(ejercicioSeleccionado.PosicionInicial))
        frmModificarImagenesEjercicio.picBoxPosicionFinal.Image = BytesToImagen(consultaByte(ejercicioSeleccionado.PosicionFinal))

        'Mostrar los datos del form frmModificarAsociarMusculosAejercicio
        frmModificarAsociarMusculosAEjercicio.tblMusculos.DataSource = objGestor.listaMusculos() 'muestra todos la lista de musculos registrados en el combobox
        frmModificarAsociarMusculosAEjercicio.tblMusculos.Columns(1).HeaderText = "id"

        Dim lista As IEnumerable = objGestor.consultarMusculosAsociados(tblEjercicios.Item(0, numero).Value) 'carga la lista de musculos asociados al ejercicio seleccionado

        Dim cell As DataGridViewCheckBoxCell

        For Each dRow As DataGridViewRow In frmModificarAsociarMusculosAEjercicio.tblMusculos.Rows 'recorre cada celda del dataGrid de musculos asociados

            For Each musculo As Musculo In lista 'recorre cada musculo de la lista de musculos asociados al ejercicio

                If dRow.Cells.Item("id").Value = musculo.Id Then 'si alguna fila del dataGrid tiene el mismo id de la lista del musculo entra al if

                    'cell.Value = True 'esta en reparacion
                    'MessageBox.Show(cell.Value.ToString) 'esta en reparacion
                    ''        'cell = dRow.Cells("Asociado") 'esta en reparacion

                End If
            Next musculo


        Next dRow

        frmTransparente.Show()
        frmModificarEjercicio.Show()

    End Sub

  
End Class
